/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ifpb.pod.servidor.funcinalidades;

import ifpb.pod.model.ContaUsuario;
import ifpb.pod.model.Contato;
import ifpb.pod.model.Noticia;
import ifpb.pod.model.Usuario;
import ifpb.pod.servidor.precistence.DAO;
import ifpb.pod.servidor.precistence.DAOGenericImpl;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
 * @author Diogenes
 */
public class Delegador implements Serializable{

    private DAO dao;

    public Delegador() {
        inicialise();
    }

    private void inicialise() {
        this.dao = DAOGenericImpl.getInstance();
    }

    public Boolean cadastrarUsuario(Usuario usuario) {
        return dao.salvar(usuario);
    }

    public Boolean atualizarUsuario(Usuario usuario) {
        System.out.println("ATUALIZAR USUARIO");
        return this.dao.atualizar(usuario);
    }

    public Boolean removerUsuario(Usuario usuario) {
        return dao.remover(usuario);
    }

    public ContaUsuario buscarContaUsuario(ContaUsuario conta) {
        Map<Integer, Object> parametros = new HashMap<Integer, Object>();
        parametros.put(1, conta.getLogin());
        return this.dao.executeSingleQuery(ContaUsuario.class, "conta.usuario.login", parametros);
    }

    public Usuario buscarUsuario(ContaUsuario conta) {
        Map<Integer, Object> parametros = new HashMap<Integer, Object>();
        parametros.put(1, conta.getLogin());
        return this.dao.executeSingleQuery(Usuario.class, "busca.usuario.login", parametros);
    }

    public Boolean salvarNoticia(Noticia noticia) {
        return this.dao.salvar(noticia);
    }

    public Contato buscarContato(Contato contato){
        Map<Integer, Object> parametros = new HashMap<Integer, Object>();
        parametros.put(1, contato.getLogin());
        return this.dao.executeSingleQuery(Contato.class, "contato.buscar", parametros);
    }

    public List<Noticia> buscarNoticiasUsuario(Usuario u) {
        System.out.println("To aqui");
        Map<Integer, Object> parametros = new HashMap<Integer, Object>();
        parametros.put(1, u.getContaUsuario().getLogin());
        return  this.dao.executeMultiplyQuery(Noticia.class, "usuario.notica", parametros);
    }
}
